{- This file is part of funbot.
 -
 - Written in 2015, 2016 by fr33domlover <fr33domlover@riseup.net>.
 -
 - ♡ Copying is an act of love. Please copy, reuse and share.
 -
 - The author(s) have dedicated all copyright and related and neighboring
 - rights to this software to the public domain worldwide. This software is
 - distributed without any warranty.
 -
 - You should have received a copy of the CC0 Public Domain Dedication along
 - with this software. If not, see
 - <http://creativecommons.org/publicdomain/zero/1.0/>.
 -}

{-# LANGUAGE OverloadedStrings #-}

module FunBot.Settings.Help
    ( help
    )
where

import Data.Settings.Types (OptRoute)
import Data.Text (Text)

help :: OptRoute -> Text
help r = case r of
    [] -> "Top level of the settings tree."
    ["channels"] -> "Basic per-channel settings."
    ["channels", _] -> "Basic settings for the channel."
    ["channels", _, "log"] ->
        "Whether events in the channel are logged by the bot locally into a \
        \log file. Currently nothing is done with these logs. In the future \
        \they can be used to send people activity they missed (or selected \
        \parts of it), generate public logs as web pages and record meetings."
    ["channels", _, "track"] ->
        "Whether user joins and parts in the channel \
        \are tracked internally. This is useful for various other features, \
        \such as memos (see !tell) and listing these events in channel logs. \
        \Tracking isn't enabled by default, to save bot server hardware \
        \resources (in particular RAM), especially for cases of many, crowded \
        \or busy channels."
    ["channels", _, "count"] ->
        "Whether channel message logs are maintained (in memory) for this \
        \channel. If yes, channel history reports (which you can get when you \
        \join a channel) will also specify how many messages you missed. For \
        \to work, you must also enable the 'track' option."
    ["channels", _, "say-titles"] ->
        "Whether I should detect URLs sent into this channel and send their \
        \titles."
    ["channels", _, "welcome"] ->
        "Whether I should send a welcome message when a new nickname unknown \
        \to me joins the channel, and the channel is quiet for some time."
    ["channels", _, "folks"] ->
        "List of main people (nicknames) in the channel. This is used in the \
        \welcome messages, and possibly other places."
    ["channels", _, "email"] ->
        "Email address (possibly of a mailing list) for async discussions. If \
        \you ask a question and nobody responds for a while, you can send \
        \your question there. Also good for long, documented discussions and \
        \generally the things email is better suited for than IRC."
    ["repos"] -> "Git repo event announcement details."
    ["repos", _] ->
        "Event announcement details for a Git repo, specified by its name and \
        \its \"owner\", (a username or an organization name). The name and \
        \owner match the ones used by the dev platform which hosts the repo. \
        \Announcment details are given as a set of specifications, one for \
        \each IRC channel where you want the events to be announced."
    ["repos", _, _] ->
        "A Git repo event announcement specification for a specific channel. \
        \It specifies the channel and defines filters to determine which \
        \events should be announced."
    ["repos", _, _, "branches"] ->
        "A list of zero or more git branch names to filter by. If the \
        \\"accept\" option is True, this is whitelist of branches whose \
        \commits to announce (and the rest won't be announced). Otherwise, \
        \it's a blacklist of branches not to announce (and all the rest will \
        \be announced). By default the list is empty, and you can reset it to \
        \empty using !reset."
    ["repos", _, _, "channel"] ->
        "IRC channel into which to announce the repo events."
    ["repos", _, _, "all-commits"] ->
        "Whether to announce all commits into the channel, or shorten long \
        \pushes to avoid filling the channel with very long announcements. \
        \For example, if you push 20 commits at once, you may prefer to see \
        \just a summary or a partial report, and not have the channel filled \
        \with a very long sequence of messages. The default is False, i.e. do \
        \shorten long announcements."
    ["repos", _, _, "accept"] ->
        "Whether the branch list specified by the \"branches\" option is a \
        \whitelist of branches whose commits to announce (True), or a \
        \blacklist of branches not to announce (False). By default it's \
        \False, and the branch list is empty, which together mean \"reject no \
        \branches\", or in other words announce commits of *all* branches."
    ["feeds"] -> "News feed item announcement details."
    ["feeds", _] -> "Details for announcing new feed items for this feed."
    ["feeds", _, "url"] -> "URL of the feed."
    ["feeds", _, "active"] -> "Whether the feed is being watched."
    ["feeds", _, "channels"] ->
        "List of IRC channels into which to announce new items from the feed."
    ["feeds", _, "show"] ->
        "Determines which information about the new feed items should be \
        \specified in the announcements."
    ["feeds", _, "show", "author"] ->
        "Whether to specify the news item author when announcing the new item."
    ["feeds", _, "show", "feed-title"] ->
        "Whether to specify the feed title when announcing a new item."
    ["feeds", _, "show", "url"] ->
        "Whether to specify the item URL when announcing the new item."
    ["shortcuts"] -> "List of available shortcuts."
    ["shortcuts", _] -> "Details of this shortcut."
    ["shortcuts", _, "prefix"] ->
        "A string by which the shortcut is identified. For example, if you'd \
        \like “TKT-258” to refer to ticket #258, set the prefix to “TKT-”."
    ["shortcuts", _, "before"] ->
        "In the full form into which the shortcut is expanded, this is the \
        \beginning of the string. For example, “http://funbot.org/tickets/”."
    ["shortcuts", _, "after"] ->
        "In the full form into which the shortcut is expanded, this is the \
        \end of the string. For example, “.html”."
    ["shortcuts", _, "channels"] ->
        "List of IRC channels in which this shortcut applies."
    _ -> "No help for this item."
